package 测试读取word内容;

import org.apache.poi.xwpf.usermodel.*;

import java.io.FileInputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;

//poi对低版本的doc本身支持的就不好所以我们直接说高版本的docx版本的api。
//1、poi操作word正文
// XWPFDocument代表一个docx文档，其可以用来读docx文档，也可以用来写docx文档
//一个文档包含多个段落，一个段落包含多个Runs文本，一个Runs包含多个Run，Run是文档的最小单元
//获取所有段落：List<XWPFParagraph> paragraphs = word.getParagraphs();
//获取一个段落中的所有片段Runs：List<XWPFRun> xwpfRuns = xwpfParagraph.getRuns();
//获取一个Runs中的一个Run：XWPFRun run = xwpfRuns.get(index);
//2、poi操作word中的表格
//一个文档包含多个表格，一个表格包含多行，一行包含多列单元格
//获取所有表格：List<XWPFTable> xwpfTables = doc.getTables();
//获取一个表格中的所有行：List<XWPFTableRow> xwpfTableRows = xwpfTable.getRows();
//获取一行中的所有列：List<XWPFTableCell> xwpfTableCells = xwpfTableRow.getTableCells();
//获取一格里的内容：List<XWPFParagraph> paragraphs = xwpfTableCell.getParagraphs();
//之后和正文段落一样
public class ReadWordDemo {
    public static void main(String[] args) throws Exception{
        XWPFDocument document = new XWPFDocument(Files.newInputStream(Paths.get("H:\\LUA\\spring_report\\workspace\\user_management\\src\\main\\resources\\word_template\\test.docx")));
        // 读取正文
        List<XWPFParagraph> paragraphs = document.getParagraphs();
        for (XWPFParagraph paragraph : paragraphs) {
            System.out.println(paragraph.getText());
            List<XWPFRun> runs = paragraph.getRuns();
            for (XWPFRun run : runs) {
                System.out.println(run.getText(0));
            }
        }
        XWPFTable xwpfTable = document.getTables().get(0);
        List<XWPFTableRow> rows = xwpfTable.getRows();
        for (XWPFTableRow row : rows) {
            List<XWPFTableCell> tableCells = row.getTableCells();
            for (XWPFTableCell tableCell : tableCells) {
                List<XWPFParagraph> paragraphs1 = tableCell.getParagraphs();
                for (XWPFParagraph paragraph : paragraphs1) {
                    System.out.println(paragraph.getText());
                }
            }
        }
    }
}
